#pragma once

#include <vector>
#include <map>
#include <iostream>
#include <fstream>

#include "Perceptron.h"
#include "QMLPNet.h"

using namespace std;

class NNetContainer
{
public:

    NNetContainer(int _dim, int _nhidden, int _nLabel, vector<int> _hiddenNum, double _lrate);

public:

    ~NNetContainer(void);

    void LoadData(string _inputFile, int _dim,int _nLabel);

    void LoadData(string _inputFile, int _dim);

    void Train(int _tms);

    void Test(string _testFile, ostream & _os);

private:
    typedef vector<double> DATA_VEC;
    typedef vector<DATA_VEC> DATA_TYPE;
    typedef vector<double> LABEL_VEC;
    typedef vector<LABEL_VEC> LABEL_TYPE;

    DATA_TYPE m_Data;
    LABEL_TYPE m_Label;
    int m_Dimention;
    int m_LabelNum;
    QMLPNet * m_Net;

};
